package com.qtrue.Annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Package: com.qtrue.Annotation
 * @ClassName: MyAnnotation
 * @Author: xiaoBao
 * @CreateTime: 2022-06-03 10:17
 * @Description:自定义注解
 */
/*
【元注解meat-annotation：对现有的注解进行修饰（解释说明）的注解】
    @Retention：指定所修饰的 Annotation 的生命周期：SOURCE\CLASS（默认行为）\RUNTIME
        只有声明为RUNTIME生命周期的注解，才能通过反射获取。

    @Target：限定当前 Annotation 可以修饰的结构类型有哪些
        TYPE：类、接口等
        FIELD：属性
        METHOD：方法
        PARAMETER：形参
        CONSTRUCTOR：构造器
        LOCAL_VARIABLE：变量
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE})
public @interface MyAnnotation {
    // 声明一个注解内的成员变量，类型为String，并且赋值一个默认值为："hello"
    // 内部定义成员变量，通常使用value来表示
    String value() default "hello";

}
